Most digital circuits process data in parallel to provide more efficient processing. Many digital devices also use a serial port for bringing data to and from the device from a remote site, often coupled to a relay station via a telephone or LAN line. The universal asynchronous receiver/transmitter (UART) is such a digital device that performs parallel-to-serial conversion of digital data. A UART communicates between parallel and serial forms by converting received data between parallel I/O devices, such as a local CPU, and serial I/O devices, such as POTS modems or other transmission lines. Most traditional UART devices can be programmed to operate at a selected baud rate, and the newer generation UARTs handle the communication more efficiently, to a great extent due to larger FIFO depths and improved flow control (fewer retries required and waits for the internal FIFO to fill or empty).
UART devices typically have a timing circuit driven by a clock signal provided by an external circuit. The timing circuit is used to set the baud rate of the serial communications port and is also the timing source for the internal logic of the UART device. The baud rate is typically selected based on requirements for communicating through the serial port to the serial I/O device. The timing circuit can be implemented using a divide-by-N circuit to provide the clock frequency used to define the baud rate for the serial communications. In applications where performance and power demands change “on the fly,” the clock frequency of the UART device is adjusted in real time. However, in some applications, adjusting the clock frequency in real time can result in a loss of data which can completely disrupt serial communications may be disrupted.